查看原文
其他

Matlab数据可视化教程1-画折线图

何勍 PsychTech 2019-07-01

说好的写教程,那就开始动手写吧。

 

今天和大家讲讲折线图在Matlab中如何实现,并且根据自身需要对线条参数,如线段类型、线段宽度、线段颜色等,进行调整。

 

第一步:生成数据

在一线城市,房价是年轻人普遍关心的问题,那么我这里假设的数据是北京地区商品房交易价格同比变化情况

【同比】:与历史同时期比较,比如2018年5月与2017年5月的比较

 


%表示注释,Matlab运行中并不会对这部分内容进行计算处理

如果是多行需要注释,可以使用一下注释方式

%{

需要注释的内容

%}

 

%randn是用来生成服从均值为0,标准差为1的正态分布的随机数

%size是用来计算变量的维度,M行xN列x P维度,这里size(x)会输出两个数1,8代表这是一个1行8列的向量

%linspace是用来生成以一定间距线性变化的数据,这里5是起始数值,10是终止数值,numel是要生成数值的个数

%numel是用来计算变量元素的个数

 

这里可以把刚才所有的函数简介放到多行注释内

%{

randn是用来生成服从均值为0,标准差为1的正态分布的随机数

size是用来计算变量的维度,M行xN列xP维度,这里size(x)会输出两个数1,8代表这是一个1行8列的向量

linspace是用来生成以一定间距线性变化的数据,这里5是起始竖直,10是终止数值,numel是要生成数值的个数

numel是用来计算变量中所含元素的个数
%}

 

第二步:画图

 


这里先用figure函数画出一个图像框,相当远画布,之后的操作都是在这个画布上操作的,如果不用这个函数先生成画布,当重新用plot画图时,会在前一次所画画布上进行操作并将前一次所画画布覆盖。因此强烈建议每一次画图之前都先用figure函数生成一个空白图像框。

这里plot是进行先画出一个线形图,都是使用Matlab自带的参数,如下图:


第三步:修图

我们要根据自己的需要对参数修改,刚才在plot的时候还返回了一个叫f 的变量,这个是图形的句柄,相当于画布中某一次所画内容的名字,我们要对f进行操作,以实现对图形的修饰。


现在来了解一下set中参数的意义

'linestyle'‘LineStyle'是用来确定线条的形状

'-', 代表实线

'--',代表折虚线

' : ', 代表点虚线

':.', 代表折点虚线

 

‘color’'Color'是线条的颜色,可以使用

'y',黄色

'r',红色

'k',黑色

'b',蓝色

'g',绿色

'm',洋红色

'c',青色

'w',白色

也可以使用[R G B]值来指定具体的颜色值,但是每一个值只能介于[0 1]之间,这里的[0.75 0.75 0.75 ]就是浅灰色,如果查到的RGB值是大于1,比如[191 191191],直接除以255就可以把颜色值转为[0 1]之间了,即[191 191 191]/255

 

‘linewidth'‘LineWidth'指定了线条的宽度

 

‘marker'‘Marker'用于指定点形

标记符    点形
 +          加号
 o          圆圈
 *          星号
 .          实心点
 x         叉号
 s         正方形
 d         钻石形
 ^         上三角形
 v         下三角形
 >        右三角形
 <        左三角形
 p        五角星形
 h        六角星形

markersize’或‘MarkerSize’用以说明点形的大小

‘markerfacecolor’’MarkerFaceColor’用来说明点形内部的填充颜色,用法如上文中的‘color’

‘markeredgecolor’’MakerEdgeColor’用来定义点形外周线的颜色,用法如上文中的‘ color’

 

当然,你也可以在plot时一次性把这些参数都定义好




 

接下来就该给图形定义横坐标、纵坐标,还有标题了

这里xlabel和ylabel之后第一个‘ ’内的文本字符是用来说明横坐标和纵坐标的名称;‘fontname’和‘fontsize’是用来指定坐标轴文本的字体名称和字体大小。

 

title的名称是‘Beijing’,我这里为了避免使用Matlab自带的字体及其大小用latex对字体及其大小进行了规定,\fontname{字体名称}\fontsize{字体大小}

 

接着我想对整个图形做进一步修饰

‘xlim’和‘ylim’分别说明了横坐标和纵坐标显示的范围

‘xtick’和‘ytick’分别指定了横坐标和纵坐标刻度的范围

‘xticklabel'和‘yticklabel’分别定义了横坐标和纵坐标刻度上显示的具体数值

box’,‘off’不显示图像右侧和上方的边框,若为‘on’则显示边框。

 

最后,如果想在折线图上显示每一个点的具体数值,就用text函数。


为了修饰,我对呈现text的具体坐标做了调整,每一个数据都往左平移0.25,往上平移0.40,由于有小数,看起来会不够美观,又对数据进行了指定小数点位数的约束。


 

以后的教程中我会给大家介绍怎么样画出误差棒(SD、SE、95% CI),如何呈现多样本时间序列中的误差棒图,shadowed errorbar,这个在EEG和ERP数据可视化中更为常用。


我把这一次所用的脚本都上传到百度云里,大家感兴趣的可以自行下载。

链接:https://pan.baidu.com/s/1oPokQWLAxPp9CCXxFaaymg 密码:ijwe


注:欢迎转发和转载,但转载请通过白名单转载或在醒目位置说明出处。







Modified on

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存